package com.vrp3d.common.utils;

import com.vrp3d.common.enums.CommonEnum;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.hash.Md5Hash;

/**
 * 密码工具类
 *
 * @author vrp3d
 */
public class PasswordEncoderUtil {

    /**
     * 生成秘密
     *
     * @param password 密码
     * @param salt     盐
     * @return 加盐加密的密码
     */
    public static String passwordHash(String password, String salt) {
        if (StringUtils.isNotEmpty(password) && StringUtils.isNotEmpty(salt)) {
            return new Md5Hash(password, salt, 2).toString();
        } else {
            throw new NullPointerException("生成密码password,salt不能为空");
        }
    }

    /**
     * 验证密码是否符合规范 三选二
     *
     * @param password 待验证密码
     * @return 验证是否通过
     */
    public static boolean checkPwd(String password) {
        return password.matches(CommonEnum.PASSWORD_REGULAR.getMsg());
    }

    /**
     * 校验用户名,英文,数字,下划线,中文3-16位,不能以数字开头
     *
     * @param username 待验证用户名
     * @return 验证结果
     */
    public static boolean checkUsername(String username) {
        return username.matches(CommonEnum.USERNAME_REGULAR.getMsg());
    }

    /**
     * 生成盐
     *
     * @return 返回盐值
     */
    public static String generateSalt() {
        return RandomUtil.generateString(CommonEnum.SALT_LENGTH.getMsgInteger());
    }
}